<?php

namespace app\admin\controller\wechat;

use app\common\controller\Backend;
use think\Controller;
use think\Request;
use think\addons\AddonException;
use think\addons\Service;

/**
 * 微信配置管理
 *
 * @icon fa fa-circle-o
 */
class Config extends Backend
{

    protected $model = null;

    public function _initialize()
    {
        parent::_initialize();
        $this->model = model('WechatConfig');
    }

    public function index($ids = null)
    {
        $name = 'wechat';

        if (!is_dir(ADDON_PATH . $name)) {
            $this->error(__('Directory not found'));
        }
        $info = get_addon_info($name);
        $config = get_addon_fullconfig($name);
        if (!$info) {
            $this->error(__('No Results were found'));
        }
        if ($this->request->isPost()) {
            $params = $this->request->post("row/a");
            if ($params) {
                foreach ($config as $k => &$v) {
                    if (isset($params[$v['name']])) {
                        if ($v['type'] == 'array') {
                            $params[$v['name']] = is_array($params[$v['name']]) ? $params[$v['name']] : (array)json_decode($params[$v['name']], true);
                            $value = $params[$v['name']];
                        } else {
                            $value = is_array($params[$v['name']]) ? implode(',', $params[$v['name']]) : $params[$v['name']];
                        }
                        $v['value'] = $value;
                    }
                }
                try {
                    //更新配置文件
                    set_addon_fullconfig($name, $config);
                    Service::refresh();
                    $this->success();
                } catch (Exception $e) {
                    $this->error(__($e->getMessage()));
                }
            }
            $this->error(__('Parameter %s can not be empty', ''));
        }
        $tips = [];
        foreach ($config as $index => &$item) {
            if ($item['name'] == '__tips__') {
                $tips = $item;
                unset($config[$index]);
            }
        }
        $this->view->assign("addon", ['info' => $info, 'config' => $config, 'tips' => $tips]);
        $configFile = ADDON_PATH . $name . DS . 'config.html';
        $viewFile = is_file($configFile) ? $configFile : '';
        return $this->view->fetch($viewFile);
    }









//    /**
//     * 添加
//     */
//    public function add()
//    {
//        if ($this->request->isPost()) {
//            $params = $this->request->post("row/a");
//            if ($params) {
//                foreach ($params as $k => &$v) {
//                    $v = is_array($v) ? implode(',', $v) : $v;
//                }
//
//                if ($params['mode'] == 'json') {
//                    //JSON字段
//                    $fieldarr = $valuearr = [];
//                    $field = $this->request->post('field/a');
//                    $value = $this->request->post('value/a');
//                    foreach ($field as $k => $v) {
//                        if ($v != '') {
//                            $fieldarr[] = $field[$k];
//                            $valuearr[] = $value[$k];
//                        }
//                    }
//                    $params['value'] = json_encode(array_combine($fieldarr, $valuearr), JSON_UNESCAPED_UNICODE);
//                }
//                unset($params['mode']);
//                try {
//                    //是否采用模型验证
//                    if ($this->modelValidate) {
//                        $name = basename(str_replace('\\', '/', get_class($this->model)));
//                        $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.add' : true) : $this->modelValidate;
//                        $this->model->validate($validate);
//                    }
//                    $result = $this->model->save($params);
//                    if ($result !== false) {
//                        $this->success();
//                    } else {
//                        $this->error($this->model->getError());
//                    }
//                } catch (\think\exception\PDOException $e) {
//                    $this->error($e->getMessage());
//                }
//            }
//            $this->error(__('Parameter %s can not be empty', ''));
//        }
//        return $this->view->fetch();
//    }
//
//    /**
//     * 编辑
//     */
//    public function edit($ids = NULL)
//    {
//        $row = $this->model->get($ids);
//        if (!$row)
//            $this->error(__('No Results were found'));
//        if ($this->request->isPost()) {
//            $params = $this->request->post("row/a");
//            if ($params) {
//                foreach ($params as $k => &$v) {
//                    $v = is_array($v) ? implode(',', $v) : $v;
//                }
//
//                if ($params['mode'] == 'json') {
//                    //JSON字段
//                    $fieldarr = $valuearr = [];
//                    $field = $this->request->post('field/a');
//                    $value = $this->request->post('value/a');
//                    foreach ($field as $k => $v) {
//                        if ($v != '') {
//                            $fieldarr[] = $field[$k];
//                            $valuearr[] = $value[$k];
//                        }
//                    }
//                    $params['value'] = json_encode(array_combine($fieldarr, $valuearr), JSON_UNESCAPED_UNICODE);
//                }
//                unset($params['mode']);
//                try {
//                    //是否采用模型验证
//                    if ($this->modelValidate) {
//                        $name = basename(str_replace('\\', '/', get_class($this->model)));
//                        $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.add' : true) : $this->modelValidate;
//                        $row->validate($validate);
//                    }
//                    $result = $row->save($params);
//                    if ($result !== false) {
//                        $this->success();
//                    } else {
//                        $this->error($row->getError());
//                    }
//                } catch (\think\exception\PDOException $e) {
//                    $this->error($e->getMessage());
//                }
//            }
//            $this->error(__('Parameter %s can not be empty', ''));
//        }
//        $this->view->assign("row", $row);
//        $this->view->assign("value", (array)json_decode($row->value, true));
//        return $this->view->fetch();
//    }

}
